package com.example.demoexample.activity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.example.demoexample.R;
import com.mysql.jdbc.Connection;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;

import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

//import rx.Observer;


public class ObservableActivity extends AppCompatActivity {
    private static final String TAG = "ObservableActivity";

    private Disposable mDisposable;

    private static String driver = "com.mysql.jdbc.Driver";//MySQL 驱动
    private static String url = "jdbc:mysql://localhost:3306/wudeng";//MYSQL数据库连接Url localhost 192.168.1.104
    private static String user = "wudeng";//用户名
    private static String password = "123456";//密码

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_observable);

        new Thread() {
            public void run() {
                getConn();
            }
        }.start();
//        obser();
//        new  Thread(){
//            public  void run(){
//                try {
//                    Class.forName("com.mysql.jdbc.Driver");//动态加载类   192.168.1.101:3306/admin
//                    String url = "jdbc:mysql://192.168.1.104:3306/wudeng";
//                    //上面语句中 mysql://mysql.lianfangti.top为你的mysql服务器地址 3306为端口号   public是你的数据库名 根据你的实际情况更改
//                    Connection conn = (Connection) DriverManager.getConnection(url, "wudeng", "123456");
////使用 DriverManger.getConnection链接数据库  第一个参数为连接地址 第二个参数为用户名 第三个参数为连接密码  返回一个Connection对象
//                    if(conn!=null){ //判断 如果返回不为空则说明链接成功 如果为null的话则连接失败 请检查你的 mysql服务器地址是否可用 以及数据库名是否正确 并且 用户名跟密码是否正确
//                        Log.d("调试","连接成功");
//                        Statement stmt = conn.createStatement(); //根据返回的Connection对象创建 Statement对象
//                        String sql = "select * from user"; //要执行的sql语句
//                        ResultSet rs = stmt.executeQuery(sql); //使用executeQury方法执行sql语句 返回ResultSet对象 即查询的结果
//                    }else{
//                        Log.d("调试","连接失败");
//                    }
//                } catch (ClassNotFoundException e) {
//                    e.printStackTrace();
//                    Log.d("调试","ClassNotFoundException e.getMessage() = " + e.getMessage());
//                } catch (SQLException e) {
//                    e.printStackTrace();
//                    Log.d("调试","SQLException e.getMessage()" + e.getMessage());
//                }
//            }
//        }.start();
            }

            /**
             * 连接数据库
             * */

            public static Connection getConn() {
                Connection conn = null;
                try {
                    Class.forName(driver);//获取MYSQL驱动
                    conn = (Connection) DriverManager.getConnection(url, user, password);//获取连接
                    if (conn != null) {
                        Log.d("调试", "连接成功");
                        Statement stmt = conn.createStatement(); //根据返回的Connection对象创建 Statement对象
                        String sql = "select * from user"; //要执行的sql语句
                        ResultSet rs = stmt.executeQuery(sql); //使用executeQury方法执行sql语句 返回ResultSet对象 即查询的结果
                        while(rs.next()){
                            int id = rs.getInt(1);// 获取第一个列的值 编号id
//                            String bookName = rs.getString(2);// 获取第二个列的值 图书名称 bookName
//                            String author = rs.getString(3);// 获取第三列的值 图书作者 author
//                            float price = rs.getFloat(4);// 获取第四列的值 图书价格 price
//                            System.out.println("id="+id+" bookName="+bookName
//                                    +" author="+author+" price="+price);
                            Log.d("调试", "id = " + id);
                        }
                    } else {
                        Log.d("调试", "连接失败");
                    }

                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                    Log.d("调试", "SQLException e.getMessage()" + e.getMessage());

                } catch (SQLException e) {
                    e.printStackTrace();
                    Log.d("调试", "SQLException e.getMessage()" + e.getMessage());
                }
                return conn;
            }


            private void obser() {
                //被观察者
//        Observable novel = Observable.create(new ObservableOnSubscribe<String>() {
//            @Override
//            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
//                emitter.onNext("连载1");
//                emitter.onNext("连载2");
//                emitter.onNext("连载3");
//                emitter.onComplete();
//            }
//        })
//         .observeOn(AndroidSchedulers.mainThread())
//                .subscribeOn(Schedulers.io())
//                .subscribe(new Observer<String>() {
//                    @Override
//                    public void onSubscribe(Disposable d) {
//                        mDisposable = d;
//                        Log.e(TAG,"onSubscribe");
//                    }
//
//                    @Override
//                    public void onNext(String string) {
//                        if ("2".equals(string)){
//                            mDisposable.dispose();
//                            return;
//                        }
//                        Log.e(TAG,"onNext:"+string);
//                    }
//
//                    @Override
//                    public void onError(Throwable e) {
//                        Log.e(TAG,"onError string = " + e.getMessage());
//                    }
//
//                    @Override
//                    public void onComplete() {
//                        Log.e(TAG,"onComplete");
//                    }
//                });
//
//        Observer<String> reader = new Observer<String>() {
//            @Override
//            public void onSubscribe(Disposable d) {
//                mDisposable = d;
//                Log.e(TAG,"onSubscribe");
//            }
//
//            @Override
//            public void onComplete() {
//                Log.e(TAG,"onComplete");
//            }
//
//            @Override
//            public void onError(Throwable e) {
//                Log.e(TAG,"onError string = " + e.getMessage());
//            }
//
//            @Override
//            public void onNext(String string) {
//                if ("2".equals(string)){
//                    mDisposable.dispose();
//                    return;
//                }
//                Log.e(TAG,"onNext:"+string);
//            }
//        };
//
//        novel.subscribe(reader);

            }


        }
